package com.gk.panda.apis.patrol.mapper;

import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gk.panda.pojo.patrol.dto.*;
import com.gk.panda.pojo.patrol.entity.PatrolEntity;
import com.gk.panda.pojo.patrol.request.PageReportRequest;
import com.gk.panda.pojo.patrol.request.PatrolQueryPageRequest;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author：xxz
 * @Create: 2022/11/1 14:40
 */
@Mapper
public interface PatrolMapper extends BaseMapper<PatrolEntity> {

    /**
     * 巡护统计数据
     * @return
     */
    List<PatrolEntity> getByYear(@Param("request") PatrolQueryPageRequest request);

    /**
     *  查询巡护列表
     * @param page

     * @param name
     * @param type
     * @return
     */
    Page<PatrolListDTO> patrolList(@Param("page") Page<PatrolListDTO> page,@Param("name")String name,@Param("type") String type);
    /**
     * 巡护分页查询
     * @param page
     * @param request
     * @return
     */
    Page<PatrolPageDTO> queryPage(@Param("page") Page<PatrolPageDTO> page, @Param("request") PatrolQueryPageRequest request);

    /**
     *  根据id 查询 巡护信息
     * @param id
     * @return
     */
    DetailListDTO getPatrolById(Long id);

    /**
     * 查询我的巡护 总里程 总时， 总提交事件数量
     * @param name
     * @return
     */
    MyPatrolDTO myPatrolSum(String name);

    /**
     *   统计数量根据 分页
     * @param type
     * @param request
     * @return
     */
    Long getCountPatrol(String type, PageReportRequest request);

    /**
     * 设置巡护里程
     */
    void setRoute(@Param("data") Double data, @Param("patrolId") Long patrolId);

    /**
     * 按照类型查询年度巡护数量 和年度事件数量
     * @param name
     * @param type
     * @param startTime
     * @param endTime
     * @return
     */
   Long countPatrol(String name, String type, DateTime startTime, DateTime endTime);

    /**
     * 根据巡护id查询数据（包括逻辑删除）
     * @param patrolId
     * @return
     */
    PatrolEntity getById(Long patrolId);
}
